package com.bwda.dsrs.filecenter.service;

import com.bwda.dsrs.filecenter.domain.po.executionpolicy.ExecutionPolicyPo;
import com.bwda.dsrs.filecenter.domain.condition.executionpolicy.ExecutionPolicyCondition;

import java.util.List;
/**
 * @author Administrator
 */
public interface ExecutionPolicyService extends BaseService<ExecutionPolicyPo, ExecutionPolicyCondition> {

    /**
     * 新增策略任务
     *
     * @param po po
     */
    void addAuditTask(ExecutionPolicyPo po);

    /**
     * 启用停用任务
     *
     * @param po 任务对象
     */
    void setTaskStatus(ExecutionPolicyPo po);

    /**
     * Query audit task info execution policy po
     *
     * @param executionPolicyId execution policy id
     * @return the execution policy po
     */
    ExecutionPolicyPo queryAuditTaskInfo(Long executionPolicyId);

    /**
     * 根据id删除管理任务
     *
     * @param executionPolicyIds 任务IDS
     */
    void deleteByIds(Long[] executionPolicyIds);

    /**
     * 修改策略任务信息
     *
     * @param po 任务对象
     */
    void updateAuditTaskInfo(ExecutionPolicyPo po);

    /**
     * 修改策略任务时设置资源范围
     *
     * @param po 任务对象
     */
    void setTaskResourceScope(ExecutionPolicyPo po);


    /**
     * 立即执行任务
     *
     * @param taskIds 任务IDS
     */
    void immediateExecuteTask(Long[] taskIds);

    /**
     * 获取状态为启用的所有任务列表
     *
     * @return list
     */
    List<ExecutionPolicyPo> selectResCanRunAuditTaskCnfg();

    /**
     * 更新最后一次执行的时间
     *
     * @param executionPolicyId execution policy id
     * @param lastExecutionTime last execution time
     */
    void updateTaskExecutionTime(Long executionPolicyId, String lastExecutionTime);

    /**
     * 根据任务名称查询策略任务数量
     *
     * @param po 策略任务对象
     * @return int
     */
    int countResAuditTaskCnfgByTaskName(ExecutionPolicyPo po);

}